<?php

App::uses('AppController', 'Controller');

class ListaEsperasController extends AppController {
	
	public function alterar($id = null){
		
		$this->set('title_for_layout', 'Lista de Espera :: Alterar');
		
		if ($this->request->data){
			
			if ($this->ListaEspera->save($this->request->data)){
				
				$this->Session->setFlash('Dados atualizados com sucesso.', 'default', array('class' => 'flashOk'));
				$this->redirect(array('action' => 'index'));
				
			} else {
				
				$this->Session->setFlash('Erro ao tentar atualizar.', 'default', array('class' => 'flashError'));
				
			}
							
		}else{
			
			$this->ListaEspera->id = $id;
			$this->ListaEspera->recursive = 0;
			$this->request->data = $this->ListaEspera->read();
			
			$this->request->data['ListaEspera']['paciente_nome'] = $this->request->data['Paciente']['nome'];
			$this->request->data['ListaEspera']['medico_nome']   = $this->request->data['Medico']['nome'];
			
		}
		
		$this->set('convenios_paciente', $this->{$this->modelClass}->Paciente->get_convenios_list($this->request->data['ListaEspera']['paciente_id'], 'array'));
		$this->set('convenios', $this->{$this->modelClass}->Convenio->find('list', array('order' => 'nome')));
		$this->set('telefones_paciente', $this->{$this->modelClass}->get_telefones_paciente($this->request->data['ListaEspera']['paciente_id']));
		$this->set('senha_medico', $this->{$this->modelClass}->get_senha_medico($this->request->data['ListaEspera']['medico_id']));
		$this->set('situacoes', $this->ListaEspera->carregar_situacao());	
		$this->set('primeira_vez', $this->ListaEspera->carregar_primeira_vez());	

	}
	
	public function buscar_telefones_paciente($paciente_id = null) {
		
		$this->autoRender = false;
		
		return $this->{$this->modelClass}->get_telefones_paciente($paciente_id);
		
	}
		
	public function excluir($id = null){
		
		try {
			$this->{$this->modelClass}->delete($id);
			$this->Session->setFlash('Registro excluído com sucesso!', 'default', array('class' => 'flashOk'));
		} catch (Exception $e) {
			$this->Session->setFlash('Não é possível excluir porque existem referências no sistema!', 'default', array('class' => 'flashError'));
		}
		
		$this->redirect($this->referer());

	}	
	
	public function grid() {

		$this->autoRender = false;
		
		$filtros = $this->Session->read('filtros_grid_lista');
		
		$conditions = array();
		
		if ($filtros['ListaEspera']['paciente_id']) {
			$conditions['paciente_id'] = $filtros['ListaEspera']['paciente_id']; 
		}
		
		if ($filtros['ListaEspera']['medico_id']) {
			$conditions['medico_id'] = $filtros['ListaEspera']['medico_id']; 
		}
		
		if ($filtros['ListaEspera']['convenio_id']) {
			$conditions['convenio_id'] = $filtros['ListaEspera']['convenio_id']; 
		}		
				
		if ($filtros['ListaEspera']['primeira_vez']) {
			$conditions['primeira_vez'] = $filtros['ListaEspera']['primeira_vez']; 
		}
		
		if ($filtros['ListaEspera']['situacao']) {
			$conditions['situacao'] = $filtros['ListaEspera']['situacao']; 
		}		

		$this->paginate = array(
            'page' => $this->request->data['page'],
            'limit' => $this->request->data['rp'],
            'order' => array($this->request->data['sortname'] => $this->request->data['sortorder']),
            'conditions' => $conditions,
			'maxLimit' => 1000,
			'recursive' => 0
		);

		$results = $this->paginate($this->modelClass);

		$data = array();
		$data['page'] = $this->request->data['page'];
		$data['total'] = $this->{$this->modelClass}->find('count', array('conditions' => $conditions));
		$data['rows'] = array();
		
		$primeira_vez = $this->ListaEspera->carregar_primeira_vez();
		$situacoes    = $this->ListaEspera->carregar_situacao();	

		foreach($results as $rs) {
			$data['rows'][] = array(
		        'id' => $rs[$this->modelClass]['id'],
		        'cell' => array(
					$rs[$this->modelClass]['id'],
					$rs[$this->modelClass]['data_inclusao'],
					$rs['Paciente']['nome'],
					$rs['Medico']['nome'],
					@$primeira_vez[$rs['ListaEspera']['primeira_vez']],
					@$situacoes[$rs['ListaEspera']['situacao']],
					$rs[$this->modelClass]['observacao']
				)
			);
		}

		return json_encode($data);

	}
	
	public function incluir($convenio_id = null){
		
		$this->set('title_for_layout', 'Lista de Espera :: Incluir');
		
		if ($this->request->data){
			
			if ($this->{$this->modelClass}->save($this->request->data)){
				
				$this->Session->setFlash('Dados incluídos com sucesso.', 'default', array('class' => 'flashOk'));
				$this->redirect(array('action' => 'index'));
				
			} else {
				
				$this->Session->setFlash('Erro ao tentar incluir.', 'default', array('class' => 'flashError'));
				
			}
			
			$this->set('convenios_paciente', $this->{$this->modelClass}->Paciente->get_convenios_list($this->request->data['ListaEspera']['paciente_id'], 'array'));
			
		} else {
			
			$this->set('convenios_paciente', array());
			
		}

		$this->set('convenios', $this->{$this->modelClass}->Convenio->find('list', array('order' => 'nome')));
		$this->set('situacoes', $this->ListaEspera->carregar_situacao());
		$this->set('primeira_vez', $this->ListaEspera->carregar_primeira_vez());
	}
	
	public function index() {
		
		if ($this->request->data) {
			
			$this->autoRender = false;
			
			$this->Session->write('filtros_grid_lista', $this->request->data);
			
		} else {
		
			$this->set('title_for_layout', 'Lista de Espera');
			
			$filtros = $this->Session->read('filtros_grid_lista');
			
			if (!$filtros) {
				$filtros['ListaEspera']['situacao'] = 'A';
			}			
					
			$this->request->data = $filtros;
			
			$this->loadModel('Paciente');
			$this->loadModel('Medico');
			$this->loadModel('Convenio');
			$this->set('pacientes', $this->Paciente->get_list_pacientes());	
			$this->set('medicos', $this->Medico->find('list', array('order' => 'nome')));	
			$this->set('convenios', $this->Convenio->find('list', array('order' => 'nome')));
			$this->set('primeira_vez', $this->ListaEspera->carregar_primeira_vez());
			$this->set('situacoes', $this->ListaEspera->carregar_situacao());				
					
		}		
			
	}	

}